package com.qdlc.p2p.biz.service;

import java.util.List;

import com.qdlc.p2p.dal.common.model.jpa.PageDataList;
import com.qdlc.p2p.dal.dto.RateInterest;
import com.qdlc.p2p.dal.dto.RateRule;
import com.qdlc.p2p.dal.dto.RateRuleDetail;
import com.qdlc.p2p.dal.model.RateInterestModel;
import com.qdlc.p2p.dal.model.RateRuleModel;

/**
 *处理加息券业务相关的数据查询和数据保存
 *业务，关于业务逻辑处理不在此类中
 * @author wjx
 * @version 2.0
 * @date 2015年4月29日 下午2:43:12
 */
public interface UpRateService {
	
	/**
	 * 根据id获取加息券规则详情
	 * @param id
	 * @return
	 */
	RateRule getRateRuleById(long id);
	
	 /**
     * 添加加息券规则
     * @param rate
     */
    void addUprateRule(RateRule rate,List<RateRuleDetail> detailList);
    
    /**
     * 获取加息券规则集合
     * @param rateRuleModel
     * @return
     */
    PageDataList<RateRule> getRateRulePage(RateRuleModel rateRuleModel);
    
    /**
     * 更新加息券规则
     * @param rule
     * @param ruleList
     */
    void updateRateRule(RateRule rule,List<RateRuleDetail> ruleList);
    
    /**
     * 跟新加息券规则
     * @param id
     * @param nowStatus
     * @param oldStatus
     * @return 跟新条数
     */
    int updateStatus(long id,int nowStatus,int oldStatus);
    
    /**
     * 根据规则id查询规则详情
     * @param ruleId
     * @return
     */
    List<RateRuleDetail> getDetailByRuleId(long ruleId);
    
    /**
     * 获取平台已发送体验金列表
     * @return
     */
    PageDataList<RateInterestModel> getRateInteModelList(RateInterestModel model);
    
    /**
     * 更新加息券状态（一般用作作废）
     * @param id
     * @param status
     * @return
     */
    int updateRateInterest(long id,int status);
    
    /**
     * 根据用户id获取当前用户可用加息券数量
     * @param userId
     * @return
     */
    int countRateInterest(long userId);
    
    /**
     *根据用户id获取当前用户可用加息券集合
     * @param userId
     * @return
     */
    List<RateInterest> getRateInterestList(long userId);
    
    /**
     * @param userId
     * @param status
     * @param currentPage 页数
     * @param pageSize    每页条数
     * @return
     */
    public PageDataList<RateInterest> getRateInterestList(long userId, int status, int currentPage, int pageSize);

    
    /**
     * 获取所有可用的规则列表
     * @return
     */
    List<RateRule> getUseRateRuleList();

    /**
     * 更新用户所获取的加息券状态,过期作废
     */
    void rateInterestExpiredDispose();
}
